package demo2;

public class Test1 {

    public static void main(String[] args) {
        String str = "abcdabcdababbbbbbab";
        String strReplace = str.replace("ab", "xy");
        String strReplace2 = str.replaceAll("ab", "xy");

        System.out.println(strReplace); // xycdxycdxyxybbbbbxy
        System.out.println(strReplace2); // xycdxycdxyxybbbbbxy
    }

    public static void main6(String[] args) {
        String s = String.format("%d-%d-%d", 2024, 3, 10);
        System.out.println(s); // 2024-3-10

        String s2 = String.format("%d.%d.%d", 2024, 2, 27);
        System.out.println(s2); // 2024.2.27

        String s3 = String.format("%d年%d月%d日", 2024, 3, 10);
        System.out.println(s3); // 2024年3月10日
    }


    public static void main5(String[] args) {
        // 字符串转数组
        String str = "frost cold";
        char[] ch = str.toCharArray();
        for (char c : ch) {
            System.out.print(c);
        } // frost cold
        System.out.println();

        // 数组转字符串
        String str2 = new String(ch);
        System.out.println(str2); // frost cold
    }


    public static void main4(String[] args) {
        String str1 = "frOST cold";
        String str2 = "FrosT COLD";

        // 小写转大写
        System.out.println(str1.toUpperCase()); // FROST COLD
        // 大写转小写
        System.out.println(str2.toLowerCase()); // frost cold
    }


    public static void main3(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("ABc");
        String s4 = new String("aBcdefg");

        System.out.println(s1.compareToIgnoreCase(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareToIgnoreCase(s3)); // 相同输出 0
        System.out.println(s1.compareToIgnoreCase(s4)); // 前k个字符完全相同，输出长度差值-4
    }


    public static void main2(String[] args) {
        String s1 = "abc";
        String s2 = "ad";
        String s3 = "abc";
        String s4 = "abcdefgh";

        System.out.println(s1.compareTo(s2)); // 不同返回字符差值-2
        System.out.println(s1.compareTo(s3)); // 相同返回0
        System.out.println(s1.compareTo(s4)); // 前k个字符完全相同,返回长度差值-4
    }


//    public boolean equals(Object anObject) {
//        // 1. 先检测this 和 anObject 是否为同一个对象比较，如果是返回true
//        if (this == anObject) {
//            return true;
//        }
//
//        // 2. 检测anObject是否为String类型的对象，如果是继续比较，否则返回false
//        if (anObject instanceof String) {
//            // 将anObject向下转型为String类型对象
//            String anotherString = (String)anObject;
//            int n = value.length;
//            // 3. this和anObject两个字符串的长度是否相同，是继续比较，否则返回false
//            if (n == anotherString.value.length) {
//                char v1[] = value;
//                char v2[] = anotherString.value;
//                int i = 0;
//                // 4. 按照字典序，从前往后逐个字符进行比较
//                while (n-- != 0) {
//                    if (v1[i] != v2[i])
//                        return false;
//                    i++;
//                }
//                return true;
//            }
//        }
//        return false;
//    }

    public static void main1(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        String s3 = new String("Hello");

        // s1、s2、s3引用的是三个不同对象，因此==比较结果全部为false
        System.out.println(s1 == s2); // false
        System.out.println(s1 == s3); // false
        // equals比较：String对象中的逐个字符
        // 虽然s1与s2引用的不是同一个对象，但是两个对象中放置的内容相同，因此输出true
        // s1与s3引用的不是同一个对象，而且两个对象中内容也不同，因此输出false
        System.out.println(s1.equals(s2)); // true
        System.out.println(s1.equals(s3)); // false

        s1.compareTo(s2);

    }

}
